package Chapter08.jiao;

/**
 * 游戏类。
 */
public class Game {
    private Player player;// 玩家

    //构造方法，传入玩家信息。
    public Game(Player player) {
        this.player = player;
    }
    //输出指定级别规定长度的字符串。
    public String printStr() {
        StringBuffer buffer = new StringBuffer();
        //通过循环生成要输出的字符串，每升一级加一个字符
        for (int i = 0; i < player.getLevelNo() + 1; i++) {
            buffer.append((char) (Math.random() * (127 + 32) + 32));
        }
        //输出字符串
        System.out.println(buffer);
        return buffer.toString();
    }

    //判断玩家输入是否正确，并输出相应结果信息。
    public void printResult(String out, String in) {
        boolean flag;
        if (out.equals(in)) {
            flag = true;
        } else {
            flag = false;
        }
        //如果输入正确
        if (flag) {
            long currentTime = System.currentTimeMillis();
            //如果超时
            if ((currentTime - player.getStartTime()) / 1000 > LevelInitial.levels[player.getLevelNo() - 1].getTimeLimit()) {
                System.out.println("你已超时");
                System.exit(1);
                // 如果没有超时
            } else {
                //计算当前积分
                player.setCurScore(player.getCurScore() + LevelInitial.levels[player.getLevelNo() - 1].getPerScore());
                //计算已用时间
                player.setElapsedTime((int) ((currentTime - player.getStartTime()) / 1000));
                //输出当前积分、当前级别、已用时间
                System.out.println("输入正确，您的级别:" + player.getLevelNo() + " ,您的积分是:" + player.getCurScore() + ",已用时间为:" + player.getElapsedTime() + "秒。");
                if (player.getLevelNo() == 6) {
                    int score = LevelInitial.levels[player.getLevelNo() - 1].getPerScore() * LevelInitial.levels[player.getLevelNo() - 1].getStrTime();
                    if (player.getCurScore() == score) {
                        System.out.println("你已闯关成功，成为绝世高手，恭喜你！！！");
                        System.out.println("玩家姓名是:" + player.getName() + ",您的级别是:" + player.getLevelNo() + " ,您的积分是:" + player.getCurScore() + ",已用时间为:" + player.getElapsedTime() + "秒。");
                        System.exit(0);
                    }
                }
            }
        } else {
            System.out.println("输入错误，退出！");
            System.exit(1);
        }
    }
}
